using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
    public static GameManager instance;  // 单例实例
    public int score = 0;               // 当前分数
    public bool isGameOver = false;     // 游戏是否结束的标志

    private int highScore;

    void Awake()
    {
        // 实现单例模式
        if (instance == null)
        {
            instance = this;
        }
        else
        {
            Destroy(gameObject);  // 防止重复实例
        }

    }
    public void Start()
    {
        Time.timeScale = 0f;//暂停游戏
        // 加载保存的最高分
        highScore = PlayerPrefs.GetInt("HighScore", 0);
        UpdateHighScoreDisplay();
    }

    // 增加分数的方法
    public void IncreaseScore()
    {
        if (!isGameOver)  // 只有游戏未结束时才能得分
        {
            score++;
            // 这里可以添加更新UI分数的代码
            UpdateScoreText();
            // 可以添加得分音效
            Debug.Log(highScore);
            // 检查并更新最高分
            if (score > highScore)
            {
                highScore = score;
                PlayerPrefs.SetInt("HighScore", highScore);
                UpdateHighScoreDisplay();
            }

        }
    }
    // 游戏结束的方法
    public void GameOver()
    {
        isGameOver = true;  // 设置游戏结束标志
        
        Time.timeScale = 0f;// 暂停游戏
        //刷新语言
        LanguageManager.Instance.RefreshLanguage();
        //显示失败UI
        UIManager.instance.ShowGameOverUI();
    }

    // 重新开始游戏的方法
    public void RestartGame()
    {
        // 重新加载当前场景
        SceneManager.LoadScene(SceneManager.GetActiveScene().name);

/*        isGameOver = false;  // 设置游戏结束标志*/
        Time.timeScale = 1f;// 开始
    }

    public void StartGame()
    {
        /*        isGameOver = false;  // 设置游戏结束标志*/
        Time.timeScale = 1f;// 开始
        

        UIManager.instance.HideMainUI();
        UIManager.instance.ShowScoreUI();
        //刷新语言
        LanguageManager.Instance.RefreshLanguage();
    }

    // 可选：手动重置最高分（用于测试或设置菜单）
    public void ResetHighScore()
    {
        PlayerPrefs.DeleteKey("HighScore");
        highScore = 0;
        UpdateHighScoreDisplay();
    }

    // 更新scoreTextUI显示
    void UpdateScoreText()
    {
        UIManager.instance.scoreText.text = score.ToString();
    }

    void UpdateHighScoreDisplay()
    {
            UIManager.instance.highScoreText.text = highScore.ToString();
    }

    //public void SetEnglish()
    //{
    //    LanguageManager.Instance.SwitchLanguage(SystemLanguage.English);
    //}

    //public void SetChinese()
    //{
    //    LanguageManager.Instance.SwitchLanguage(SystemLanguage.Chinese);
    //}

}
